Many existing processors are designed to selectably operate in either “big-endian” or “little-endian” mode. These devices are known as “bi-endian” processors. For example, the BCM4702 processor chip, marketed by Broadcom Corporation, is bi-endian and operates in either little-endian mode or big-endian mode depending upon the voltage level applied to a particular one of its EIF_DATA pins when the processor is initialized. In little-endian mode, for a given numerical value, the lowest memory address for the value represents the least significant portion of the value, while the highest memory address for the value represents the most significant portion of the value. For instance, where the value is defined by four bytes, the least significant byte is found in the lowest memory address for that value and the most significant byte is found in the highest memory address for that value. In big-endian mode, the reverse is true; the lowest memory address in the value's address range represents the most significant portion of the value, while the highest memory address in the value's address range represents the least significant portion of the value.
Most computer architectures operate under little-endian mode. For example, most personal computers that use Microsoft WINDOWS brand operating systems operate in little-endian mode. However, some computer architectures use big-endian mode. It is sometimes desirable to be able to switch a device between endian modes so that a different set of software (e.g., a different operating system) may be used in the device. For example, assume that the firmware of a broadband router is running the VxWorks operating system, which uses big-endian mode. It may be desirable to switch the router over to run the Microsoft WINDOWS CE brand operating system, which uses little-endian mode. If the router has a bi-endian processor, then such switching may be performed.
However, in order to switch a bi-endian processor embedded in a device (such as the above-described router) between endian modes, the device power must be turned off, the casing of the device must be opened (usually by the end user) and a physical jumper wire must be reconfigured. By reconfiguring the jumper wire and then reapplying power to the device, the input to the bi-endian processor receives an appropriate signal defining which endian mode to use. Unfortunately, requiring a user to open a device and move a jumper is inconvenient and requires a level of skill that many end users simply do not have. Therefore, a need exists to allow a device having a bi-endian processor to conveniently switch endian modes without necessarily requiring a user to open the device, move a jumper, and/or make any other hardware change to the device.